home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / asm / games / texturemapping / demo.i < prev    next >
Text File  |  1980-01-03  |  4KB  |  232 lines

  1. ; $$TABS=8
  2. ; master include file for AA demo
  3. ;
  4.  
  5.     opt    p=68020
  6.     include    'profile.i'
  7.     basereg    blink
  8.     addsym
  9.  
  10. PROFILE    set    0
  11. SCREEN_WIDTH    equ    320        ; width of raster for our screen
  12. SCREEN_HEIGHT    equ    200        ; height for our screen.
  13. SCREEN_DEPTH    equ    8        ; depth (number of bitplanes) for our screen
  14.  
  15. CANVAS_WIDTH    equ    320        ; width of canvas to scroll over
  16. CANVAS_HEIGHT    equ    200        ; height of canvas to scroll over.
  17.  
  18. DO_CEILING    set    0
  19.  
  20. MOTION_BLUR    equ    0
  21. DOBLUR    equ    0
  22.  
  23.     ifne    DOBLUR
  24. HSCALE    set    2
  25.     else
  26. HSCALE    set    1
  27.     endc
  28.  
  29.  
  30. DUNGEON_WINDOW_WIDTH    equ    192/HSCALE
  31. DUNGEON_WINDOW_HEIGHT    equ    90
  32.  
  33. DUNGEON_WINDOW_X    equ    0
  34. DUNGEON_WINDOW_Y    equ    0
  35. DUNGEON_WINDOW_RIGHT    equ    DUNGEON_WINDOW_X+(DUNGEON_WINDOW_WIDTH*HSCALE)-1
  36.  
  37. DO_DIAGNOSTICS    set    1        ; diagnostic messages?
  38. DUNGEON_GRID_SIZE    equ    16        ; 16x16
  39. DUNGEON_GRID_SHIFT    equ    4        ; lg(dungeon_grid_size)
  40.  
  41. ; macros for opening and closing libraries, with error checks
  42.  
  43. geta6    macro
  44. ; restore variable base pointer
  45.     xref    _LinkerDB
  46.     lea    _LinkerDB,a6
  47.     endm
  48.  
  49.  
  50. openlib    macro    lname,lvar
  51. ;        \1    \2
  52. ; open a library and jump to quiet_error if it can't be found.
  53.     lea    \1,a1        ;; library name
  54.     moveq    #39,d0            ;; request version 39
  55.     move.l    a6,a5            ;; save local var pointer
  56.     move.l    _SysBase(a5),a6        ;; get from local copy, not location 4!
  57.     jsr    _LVOOpenLibrary(a6)    ;; open the library
  58.     move.l    a5,a6            ;; restore variable base
  59.     move.l    d0,\2(a5)        ;; save it and test for zero
  60.     beq    quiet_error        ;; not found?
  61.     endm
  62.  
  63. closelib    macro    lbase
  64. ;            \1
  65. ; close a library and set its base ptr to 0.
  66. ; trashes a0/a1/d0/d1
  67.     move.l    \1(a6),d0        ;; fetch library pointer and test for 0
  68.     beq.s    already_closed\@
  69.     move.l    d0,a1
  70.     move.l    _SysBase(a6),a6        ;; need execbase for closelib
  71.     jsr    _LVOCloseLibrary(a6)    ;; close it
  72.     geta6                ;; get back varbase
  73.     clr.l    \1(a6)            ;; clear ptr for safety
  74. already_closed\@:
  75.     endm
  76.  
  77.  
  78. CWAIT    macro    ucl,vpos,hpos
  79. ;        \1  \2   \3
  80. ; trashes d0-d1/a0-a1
  81.     xref    _LVOCWait,_LVOCBump
  82.     move.l    \1,a1
  83.     move.l    a1,-(a7)
  84.     move.l    \2,d0
  85.     move.l    \3,d1
  86.     jsr    _LVOCWait(a6)
  87.     move.l    (a7)+,a1
  88.     jsr    _LVOCBump(a6)
  89.     endm    
  90.  
  91. CMOVE    macro    ucl,reg,value
  92. ;        \1  \2   \3
  93. ; trashes d0-d1/a0-a1
  94.     xref    _LVOCMove,_LVOCBump
  95.     move.l    \1,a1
  96.     move.l    a1,-(a7)
  97.     move.l    \2,d0
  98.     move.l    \3,d1
  99.     jsr    _LVOCMove(a6)
  100.     move.l    (a7)+,a1
  101.     jsr    _LVOCBump(a6)
  102.     endm    
  103.  
  104. CEND    macro    ucl
  105. ;        \1
  106.     CWAIT    \1,#10000,#255
  107.     endm
  108.  
  109. INITLOCALS    macro
  110. TEMP_SIZE    set    0
  111.     endm
  112.  
  113. WORDVAR    macro    vname
  114. TEMP_SIZE    set    TEMP_SIZE+(TEMP_SIZE&1)    ; even up
  115. \1_w        set    TEMP_SIZE
  116. TEMP_SIZE    set    TEMP_SIZE+2
  117.     endm
  118.  
  119. LONGVAR    macro    vname
  120. TEMP_SIZE    set    TEMP_SIZE+((4-(TEMP_SIZE&3))&3)    ; lword align
  121. \1_l        set    TEMP_SIZE
  122. TEMP_SIZE    set    TEMP_SIZE+4
  123.     endm
  124.  
  125. BVAR    macro    vname
  126. \1_b    set    TEMP_SIZE
  127. TEMP_SIZE    set    TEMP_SIZE+1
  128.     endm
  129.  
  130. ARRAYVAR    macro    vname,size
  131. TEMP_SIZE    set    TEMP_SIZE+((4-(TEMP_SIZE&3))&3)    ; lword align
  132. \1    set    TEMP_SIZE
  133. TEMP_SIZE    set    TEMP_SIZE+\2
  134.     endm
  135.  
  136. ALLOCLOCALS    macro
  137. ; align temp_size and sub from sp
  138. TEMP_SIZE    set    TEMP_SIZE+((4-(TEMP_SIZE&3))&3)    ; lword align
  139.     lea    -TEMP_SIZE(a7),a7
  140.     endm
  141.  
  142. dbug    macro    r
  143.     xref    _kprintf
  144.     movem.l    d0/d1/a0/a1,-(a7)
  145.     move.l \1,-(a7)
  146.     pea    a\@(pc)
  147.     jsr    _kprintf
  148.     lea    8(a7),a7
  149.     bra.s    b\@
  150. a\@: dc.b    '%lx ',0,0
  151. b\@:
  152.     movem.l    (a7)+,d0/d1/a0/a1
  153.     endm
  154.  
  155. dbugw    macro    r
  156.     xref    _kprintf
  157.     movem.l    d0/d1/a0/a1,-(a7)
  158.     move.w \1,-(a7)
  159.     pea    a\@(pc)
  160.     jsr    _kprintf
  161.     lea    6(a7),a7
  162.     bra.s    b\@
  163. a\@: dc.b    '%x ',0
  164. b\@:
  165.     movem.l    (a7)+,d0/d1/a0/a1
  166.     endm
  167.  
  168. print    macro    string
  169.     xref    KPutStr
  170.     movem.l    a0/a1/d0/d1,-(a7)
  171.     lea    mystring\@(pc),a0
  172.     jsr    KPutStr
  173.     movem.l    (a7)+,a0/a1/d0/d1
  174.     bra.s    skip\@
  175. mystring\@:
  176.     dc.b    \1,0
  177.     cnop    0,2
  178. skip\@:
  179.     endm
  180.  
  181. dstring    macro    fmtstring, x,y,arg0,arg1,arg2,arg3,arg4
  182. ;        \1      \2\3 \4   \5   \6   \7   \8
  183.     xref    PlotString
  184.     movem.l    d0/d1/d2/d3/a0/a1/a5,-(a7)
  185.     move.l    a7,a5
  186.     ifnc    "\8",""
  187.     move.l    \8,-(a7)
  188.     endc
  189.     ifnc    "\7",""
  190.     move.l    \7,-(a7)
  191.     endc
  192.     ifnc    "\6",""
  193.     move.l    \6,-(a7)
  194.     endc
  195.     ifnc    "\5",""
  196.     move.l    \5,-(a7)
  197.     endc
  198.     ifnc    "\4",""
  199.     move.l    \4,-(a7)
  200.     endc
  201.     move.l    #\2,d2
  202.     move.l    #\3,d3
  203.     lea    tempstring\@(pc),a0
  204.     pea    skipstr\@(pc)
  205.     bra    PlotString
  206. tempstring\@:
  207.     dc.b    \1,0
  208.     cnop    0,2
  209. skipstr\@:
  210.     move.l    a5,a7
  211.     movem.l    (a7)+,d0/d1/d2/d3/a0/a1/a5
  212.     endm
  213.  
  214. replicate    macro    reg,trashreg
  215. ;        \1  \2
  216.     move.b    \1,\2
  217.     lsl.l    #8,\1
  218.     move.b    \2,\1
  219.     move.w    \1,\2
  220.     swap    \1
  221.     move.w    \2,\1
  222.     endm
  223.  
  224. plotpixel    macro    x, y, c, temp
  225. ;              \1 \2 \3  \4
  226.     xref    yadrtable
  227.     move.l    (yadrtable.w,a6,\2.w*4),\4
  228.     move.b    \3,(\4,\1.w)
  229.     endm
  230.  
  231. _LVOGetJoyPortEvent equ    -$30
  232.